package com.scau.service;

import com.scau.exception.FileUtilException;
import com.scau.exception.GoodsStockException;
import com.scau.exception.OrderItemException;
import com.scau.pojo.*;
import com.scau.dto.OrderInfo;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 *  BrandController对应的Service服务
 *
 * Siaoja
 */
public interface IBrandControllerService {
    //处理菜单栏的显示公司信息请求，返回公司信息对象
    public CompanyInfo getCompanyInfo(String username);
    //处理菜单栏的品牌管理请求，返回该用户的所有品牌
    public List<Brand> getBrands(String username);
    //处理菜单栏品牌商-商品录入、商品主图的请求，返回商品列表
    public List<Goods> getGoods(String username);
    //处理菜单栏品牌商-订单管理请求，返回所有订单列表
    public List<OrderInfo> ordersManagement(String username);

    //处理BrandController品牌商-公司信息保存请求，保存公司信息
    public CompanyInfo saveCompanyInfo(CompanyInfo companyInfo);
    //品牌商-品牌管理    增加品牌
    public void addBrand(Brand brand, MultipartFile logo) throws IOException;
    //品牌商-品牌管理    跳转至修改品牌页面
    public Brand getUpdateBrand(String id);
    //品牌商-品牌管理    修改品牌页面
    public void updateBrand(Brand brand,MultipartFile logo) throws IOException;
    //品牌商-品牌管理    删除品牌
    public void deleteBrand(String id) throws FileUtilException;

    //处理BrandController品牌商-商品录入中的修改按钮，跳转至修改界面，先获得修改商品的信息，然后在Controller中跳转
    public Goods getUpdateGoods(String id);
    //处理BrandController品牌商-商品录入中的删除按钮，删除Goods，返回删除的Goods对象
    public Goods deleteGoods(String id) throws FileUtilException;
    //处理BrandController品牌商-商品主图中修改商品状态：待入仓、待上架、上架、下架
    public Goods updateBrandGoodsStatus(Goods goods);
    //处理BrandController中查询单个订单信息
    public OrderInfo getBrandOrder(String id);
    //处理BrandController中订单管理更新订单状态
    public OrderItem updateBrandOrderStatus(String id,Integer status) throws GoodsStockException, OrderItemException;

}
